package cn.weiron.fun.sample.service;

import cn.weiron.fun.infrastructure.dto.PageResult;
import cn.weiron.fun.sample.dto.RecordCountDto;
import cn.weiron.fun.sample.dto.RecordPageDto;
import cn.weiron.fun.sample.dto.SignRequestDto;
import cn.weiron.fun.sample.entity.SamplePointSign;
import cn.weiron.fun.sample.result.RecordCount;
import cn.weiron.fun.sample.result.SamplePointSignRecord;
import com.baomidou.mybatisplus.extension.service.IService;

import javax.servlet.http.HttpServletRequest;

/**
 * (SamplePointSign)表服务接口
 *
 * @author makejava
 * @since 2022-07-16 10:36:19
 */
public interface SamplePointSignService extends IService<SamplePointSign> {

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    SamplePointSign queryById(Integer id);

    /**
     * 分页查询
     *
     * @return 查询结果
     */
    PageResult<SamplePointSign> queryByPage(SignRequestDto dto);

    /**
     * 新增数据
     *
     * @param samplePointSign 实例对象
     * @return 实例对象
     */
    SamplePointSign insert(SamplePointSign samplePointSign);

    /**
     * 修改数据
     *
     * @param samplePointSign 实例对象
     * @return 实例对象
     */
    SamplePointSign update(SamplePointSign samplePointSign);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 是否成功
     */
    boolean deleteById(Integer id);

    /**
     * 月度打卡记录
     *
     * @param dto
     * @return
     */
    PageResult<SamplePointSignRecord> queryByYearAndMonth(RecordPageDto dto);

    /**
     * 统计
     * @param dto
     * @return
     */
    RecordCount queryCount(RecordCountDto dto);

    /**
     * 记录操作日志
     * @param request
     */
    void logRemark(HttpServletRequest request);
}
